Distributed systems are highly-available, scalable systems that are utilized in various situations, including those situations that require a high-throughput of work or continuous or nearly continuous availability of the system.
Typically, users of a distributed system desire access to and modification of data residing in a global repository accessible by one or more users of the system. In order to prevent corruption of the data, techniques are needed to manage the access and modification of the data.
For instance, assume that a repository has a hierarchical topology having various levels. Previously, in order to lock requested resources of the repository, hierarchical locks (e.g., read/write locks) were used. Hierarchical locks require, however, the employment of a lock at each level of the hierarchy. Thus, if the topology has five (5) levels, and a resource on the fifth level is to be locked, then five locks are needed.
The employment and management of so many locks degrades system performance. Thus, a need still exists for an efficient locking facility that enables concurrent access to resources of a data repository without requiring locks on each level of the data repository topology.